package com.sqlcheck.dto.ai;

import lombok.Data;
import lombok.Builder;
import lombok.AllArgsConstructor;
import lombok.NoArgsConstructor;

import java.math.BigDecimal;
import java.util.List;

/**
 * AI规则验证响应DTO
 * AI必须严格按照此格式返回验证结果
 * 
 * @author Claude
 * @version v4.2
 * @since 2025-09-04
 */
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class RuleVerificationResponse {

    private Long taskId;                    // 任务ID（用于验证响应正确性）
    private BigDecimal overallConfidence;   // 整体置信度(0.00-1.00)
    private String analysisTimestamp;       // 分析时间戳
    private List<StatementVerificationResult> verificationResults; // 验证结果列表

    /**
     * 单个SQL语句的AI验证结果
     */
    @Data
    @Builder
    @NoArgsConstructor
    @AllArgsConstructor
    public static class StatementVerificationResult {
        private Integer statementNumber;    // 语句编号（必须与请求匹配）
        private List<IssueVerificationResult> issueVerifications; // 该语句的问题验证结果
    }

    /**
     * 单个问题的AI验证结果
     */
    @Data
    @Builder
    @NoArgsConstructor
    @AllArgsConstructor
    public static class IssueVerificationResult {
        private String ruleId;              // 规则ID（必须与请求匹配）
        private Boolean ruleAnalysisConfirmed; // AI确认结果：true-确认有问题，false-认为无问题
        private BigDecimal confidence;       // AI置信度(0.00-1.00)
        private String aiIssueDescription;  // AI重新描述的问题
        private String aiSuggestion;        // AI的修复建议
        private String optimizedSql;        // AI优化后的SQL语句
        private String verificationReasoning; // AI验证的具体推理过程
    }
}